Hot swapping or in-service upgrades of computer software has been a topic of interest for many years. For many applications and operating systems, an upgrade is done by stopping the computer program, installing the upgrade, and then restarting the program. In some cases, the operating system also needs to be restarted.
In some contexts, stopping the software is highly undesirable. For example, in a telephone network switch that is handling calls, such stopping and starting of the software would cause the calls to be dropped.
Various solutions have been proposed and implemented, for example, duplicate telephone switch software including the desired upgrade is launched, and new calls are handled by the upgraded software. When all old calls handled by the pre-upgrade software naturally end, the pre-upgrade version of the software is shut down, leaving only the upgraded software to handle calls. This is essentially a type of hot migration, with the software upgrade process itself involving regular installation methods that include stopping and restarting the program.
Some solutions are similar to the previously described solution, except that calls, or any other transactions or processes handled by the software, are moved from the pre-upgrade software to the upgraded software during calls or transactions. This can result in an audible click or pause in the case of call, or in the case of other transactions or processes, some delay, dropped frame or other disturbance that should normally not be fatal to the call or process underway.
In applications where in-service upgrade of software is important, reliability is likewise very important. Reliability is measured by the operational or “up-time” of a system. Up-time of 99.99% means about 53 minutes a year of down time, 99.999% means about 5 minutes a year of down time, 99.9999% means less than a minute a year of down time, and 99.99999% means less than 3 seconds a year of down time. For some applications, achieving 6 nines or higher is essential. Efficient in-service upgrade capability is important to reduce down time due to upgrades.
In-service upgrade of software that does not interfere with the normal operation of the software has also been proposed. For example, the Erlang programming language supports hot-swapping of code, and was released as open-source in 1998. The master's thesis by Ning Feng titled “S-Module Design for Software Hot-Swapping”, dated Nov. 25, 1999 (Ottawa-Carleton Institute for Electrical and Computer Engineering, Faculty of Engineering, Department of Systems and Computer Engineering, Carleton University) describes in-service upgrade of software modules. Three different approaches to in-service upgrade of software modules are presented in the thesis. As described, hot swapping of a software module is a difficult task that is done only when the software module is in a state that permits swapping.
For in-service upgrade of software, reliable and efficient implementation is not assured by any programming language or hot-swapping technique. Deadlocks, upgrade time and managing upgrade of multiple software modules at the same time are still problems with in-service upgrade of software.